mongo query cursorはfor awaitで回せる
node 12以降なら、MongoDB query cursorはfor await...ofで回せる
それまではcursor.next()がnullになるまで判定してがんばって回してた
contentType: "image/png"をcategories: ["image", "png"]の様に分割するbatchの例
code:js
const cursor = GCSFile.find({ categories: { $exists: false } })
.cursor()
.addCursorFlag('noCursorTimeout', true)
for await (const file of cursor) {
// console.log(file)
const { contentType, _id } = file
const categories = contentType ? contentType.split('/') : []
console.log(_id, contentType, categories)
await GCSFile.update({ _id }, { $set: { categories } })
}
await cursor.close()
なお、mongoose 6以降ではcursor()呼び出さずにqueryを直接for await...ofで回せる